<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.org/ui"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:ui="http://java.sun.com/jsf/facelets">    
    
    <ui:composition template="templatePadrao.xhtml">                                
        
            <ui:define name="top">       
                <ui:include src="menu.xhtml" />
            </ui:define>             
        
   <ui:define name="content">          

       <h:form id="formMessages">
           <p:growl id="messages" widgetVar="messages" showDetail="true" life="5000" sticky="false" autoUpdate="true" />  
       </h:form>
       
       <h:form id="principal" prependId="false">
                
                <p:contextMenu for="professores">                      
                     <p:menuitem value="Deletar" update="professores" icon="ui-icon-close" onclick="confirmation.show()"/> 
                     <p:menuitem value="Editar"  update="principal" icon="ui-icon-arrowrefresh-1-w" actionListener="#{ProfessorController.preparaEdicao()}"/>
                </p:contextMenu>                                           

                <p:fieldset legend="Professor">
                    
                    <p:accordionPanel>  
                        <p:tab title="Dados Cadastrais">
                            
                            <table> 
                                <tr>
                                    <td style="width: 75px;" align="right">
                                        <p:outputLabel>Nome *</p:outputLabel>
                                    </td>
                                    <td style="width: 475px">
                                        <p:inputText id="nome_professor" value="#{ProfessorController.professor.nome}" size="40" maxlength="60" title="Informe o Nome" />
                                    </td>
                                    <td style="width: 42px;" align="right">
                                        <p:outputLabel>CPF *</p:outputLabel>
                                    </td>
                                    <td style="width: 90px">
                                        <p:inputMask mask="999.999.999-99" id="cpfProfessor" size="16" maxlength="14" value="#{ProfessorController.professor.cpf}" title="Informe o CPF do Professor">
                                            <f:ajax event="blur"/>
                                        </p:inputMask>
                                    </td>   
                                    <td style="width: 170px" align="right">
                                        <p:outputLabel>Data de Nascimento</p:outputLabel>
                                    </td>
                                    <td style="width: 200px">
                                        <p:inputText size="11" maxlength="10" id="data_nascimento" value="#{ProfessorController.professor.nascimento}" title="Informe a Data de Nascimento" onblur="validaDataFim(this)" onkeyup="mascaraData(this)" />
                                    </td>
                                                               
                                </tr>

                                <tr>
                                    <td style="width: 50px" align="right">                                    
                                        <p:outputLabel>Endereço</p:outputLabel>                                    
                                    </td>
                                    <td style="width: 45px">
                                        <p:inputText id="enderecoProfessor" size="40" maxlength="60" value="#{ProfessorController.professor.endereco}" title="Informe o Endereço do Professor"/>
                                    </td>
                                    
                                    <td style="width: 50px" align="right">
                                        <p:outputLabel>Bairro</p:outputLabel>
                                    </td>                                    
                                    
                                    <td style="width: 410px">
                                        <p:inputText id="bairroProfessor" size="30" maxlength="30" value="#{ProfessorController.professor.bairro}" title="Informe 0 bairro do Professor"/>
                                    </td>                                    

                                </tr>
                                <tr>
                                    <td style="width: 47px" align="right">
                                        <p:outputLabel>Cidade</p:outputLabel>
                                    </td>
                                    <td style="width: 45px">
                                        <p:inputText id="cidadeProfessor" size="30" maxlength="30" value="#{ProfessorController.professor.cidade}" title="Informe a Cidade do Professor"/>
                                    </td>
                                    <td style="width: 50px" align="right">
                                        <p:outputLabel>UF </p:outputLabel>
                                    </td>
                                    <td style="width: 410px">
                                        <p:inputText id="ufProfessor" size="2" maxlength="2" value="#{ProfessorController.professor.estado}" title="Informe o Estado do Professor"/>
                                    </td> 
                                </tr>
                                <tr>
                                    <td style="width: 30px" align="right">                                    
                                        <p:outputLabel>Identidade</p:outputLabel>                                    
                                    </td>
                                    <td style="width: 80px">
                                        <p:inputText id="identidadeProfessor" size="15" maxlength="15" value="#{ProfessorController.professor.identidade}" title="Informe a Identidade do Professor"/>
                                    </td>
                                    
                                    <td style="width: 135px" align="right">
                                        <p:outputLabel>Email</p:outputLabel>
                                    </td>                                    
                                    
                                    <td style="width: 655px">
                                        <p:inputText id="emailProfessor" size="40" maxlength="50" value="#{ProfessorController.professor.email}" title="Informe o Email do Professor"/>
                                    </td>                                    
                                </tr>

                                <tr>
                                    <td style="width: 48px" align="right">                                    
                                        <p:outputLabel>Tel. Resid</p:outputLabel>                                    
                                    </td>
                                    <td style="width: 28px">
                                        <p:inputMask mask="(99)9999-9999" id="telResidProfessor" size="20" maxlength="20" value="#{ProfessorController.professor.telResid}" title="Informe o Telefone Residencial do Professor"/>
                                    </td>
                                    
                                    <td style="width: 40px" align="right">
                                        <p:outputLabel>Celular</p:outputLabel>
                                    </td>                                                                        
                                    <td style="width: 200px">
                                        <p:inputMask mask="(99)9999-9999" id="celularProfessor" size="20" maxlength="20" value="#{ProfessorController.professor.telCel}" title="Informe o Celular do Professor"/>
                                    </td>     
                                </tr>
                                <tr>                                    
                                    <td style="width: 30px" align="right">
                                        <p:outputLabel>Tel. Comercial</p:outputLabel>
                                    </td>                                                    
                                    
                                    <td style="width: 220px">
                                        <p:inputMask mask="(99)9999-9999" id="telComProfessor" size="20" maxlength="20" value="#{ProfessorController.professor.telCom}" title="Informe o Telefone Comercial do Professor"/>
                                    </td>                                                                        
                                </tr>
                            </table>                              
                            <table width="700px" border="0">
                                <tr>
                                    <td width="200px" align="right">
                                        <p:commandButton value="Unidade x Tipologia" actionListener="#{ProfessorController.resetUnidadeTipologia()}" onclick="unidadeTipologia.show()" update=":dlgUnidadeTipologia"/>
                                   </td>                                    
                                </tr>                                                              
                                <tr>
                                    <td width="100px" align="right">
                                       <p:commandButton value="Carga fechada" onclick="disponibilidade.show()" update=":dlgDisponibilidade">
                                           <p:ajax event="click" update=":dlgDisponibilidade:selectUnidadeTipologia"/>
                                       </p:commandButton>
                                   </td>                                    
                                </tr>                                
                                <tr>
                                    <td align="left">
                                        <h:outputText value="Ativo ?  " />  
                                    </td>
                                    <td align="left">
                                        <p:selectBooleanCheckbox  value="#{ProfessorController.ativoSelecionado}" id="ativo">
                                            <p:ajax  event="change" update="ativo" listener="#{ProfessorController.validaAtivo()}"/>
                                        </p:selectBooleanCheckbox>
                                    </td>
                                </tr>                                
                                <tr>
                                    <td align="left">
                                        <h:outputText value="Problema ?" rendered="#{loginController.usuDir}"/>  
                                    </td>
                                    <td align="left">
                                        <p:selectBooleanCheckbox value="#{ProfessorController.professorProblema}" id="problema" rendered="#{loginController.usuDir}">                                            
                                            <p:ajax  event="change" update="ativo" listener="#{ProfessorController.marcaAtivo()}"/>
                                        </p:selectBooleanCheckbox>
                                    </td>
                                </tr>                                
                            </table>                                                                                                                            
                        </p:tab>                        
                        <p:tab title="Observa&ccedil;&otilde;es - Ocorr&ecirc;ncias"> 
                            <table width="100%">
                                <tr>
                                    <td>
                                        Observa&ccedil;&otilde;es
                                    </td>
                                    <td>
                                        <p:inputTextarea rows="5" cols="50" maxlength="500" value="#{ProfessorController.professor.observacoes}" counterTemplate="{0} caracteres a serem digitados."/>
                                        <h:outputText id="counter" />
                                    </td>
                                    <td>
                                        Ocorr&ecirc;ncias
                                    </td>
                                    <td>
                                        <p:inputTextarea rows="5" cols="50" maxlength="500" value="#{ProfessorController.professor.ocorrencias}" counterTemplate="{0} caracteres a serem digitados."/>
                                        <h:outputText id="counterOco" />
                                    </td>                                    
                                </tr>
                            </table>
                        </p:tab>           
                        
                    </p:accordionPanel>
                    
                    <p:commandButton value="Salvar" id="salvaProfessor" update="professores :principal" actionListener="#{ProfessorController.preparaInclusao()}"/>
                    <p:commandButton value="Cancelar" id="cancelarProfessor" process="@form" update="principal" actionListener="#{ProfessorController.resetProfessor()}"/>
                    
                </p:fieldset>
                               
     <p:dataTable id="professores" var="professor" emptyMessage="Não existem professores cadastrados" 
                  value="#{ProfessorController.lista}" rowKey="#{professor.id}" 
                  selectionMode="single" selection="#{ProfessorController.professorSelecionado}" 
                  paginator="true" rows="20">

                    <p:column filterMatchMode="contains" filterBy="#{professor.nome}">   
                        <f:facet name="header">  
                                <h:outputText value="Nome" />  
                        </f:facet>                        
                            <h:outputText value="#{professor.nome}"/>
                    </p:column>

                    <p:column filterMatchMode="contains" filterBy="#{professor.cpf}">  
                        <f:facet name="header">  
                                <h:outputText value="CPF" />  
                        </f:facet>
                            <h:outputText value="#{professor.cpf}"/>
                    </p:column>

                    <p:column filterMatchMode="contains" filterBy="#{professor.email}">                            
                        <f:facet name="header">  
                                <h:outputText value="Email" />  
                        </f:facet>                        
                            <h:outputText value="#{professor.email}"/>
                    </p:column>
         
                    <p:column filterMatchMode="contains" filterBy="#{professor.telCel}">                            
                        <f:facet name="header">  
                                <h:outputText value="Tel Cel." />  
                        </f:facet>                        
                            <h:outputText value="#{professor.telCel}"/>
                    </p:column>
         
                    <p:column filterMatchMode="contains" filterBy="#{professor.telResid}">                            
                        <f:facet name="header">  
                                <h:outputText value="Tel. Resid" />  
                        </f:facet>                        
                            <h:outputText value="#{professor.telResid}"/>
                    </p:column>
         
                    <p:column filterMatchMode="contains" filterBy="#{professor.ocorrencias}">                            
                        <f:facet name="header">  
                                <h:outputText value="Ocorrências" />  
                        </f:facet>                        
                            <h:outputText value="#{professor.ocorrencias}"/>
                    </p:column>          

                </p:dataTable>
           
           <h:panelGrid columns="4">
           
                <p:commandButton value="Deletar" id="deletarProfessor" update="professores :principal" onclick="confirmation.show()"/>
                <p:commandButton value="Editar"  id="editarProfessor" update="principal" actionListener="#{ProfessorController.preparaEdicao()}"/>

                <h:outputText value="Somente Professores Ativos? " />  
                <p:selectBooleanCheckbox label="Ativo" value="#{ProfessorController.ativoInativo}">
                    <p:ajax update="professores" listener="#{ProfessorController.listaProfessores()}"/>
                </p:selectBooleanCheckbox>                                
           
           </h:panelGrid>           
                              
           <h:panelGrid rendered="#{loginController.usuDir}">  
                    <p:panel header="Exportar Dados">  
                        <h:commandLink>  
                            <p:graphicImage value="./../img/excel.png" />  
                            <p:dataExporter type="xls" target="professores" fileName="Professores" />  
                        </h:commandLink>  

                        <h:commandLink>  
                            <p:graphicImage value="./../img/pdf.png" />  
                            <p:dataExporter type="pdf" target="professores" fileName="Professores"/>  
                        </h:commandLink>  

                    </p:panel>  
                </h:panelGrid>           
            
           </h:form>
       
        <!-- Abaixo temos um modal de confirmação de exclusão repare que ele é fora do form principal, pois se colocarmos dentro podemos ter alguns problemas com isso.-->
        <h:form id="dlg" prependId="false">
            <p:confirmDialog message="Deseja realmente excluir este registro?" header="Aviso" severity="alert" widgetVar="confirmation" modal="true">
                <!--caso seja sim chamo o metodo excluir, e fecho o modal com o oncomplete, tenho o process que estou dizendo para processar o form, e update para atualizar a tabela-->
                <p:commandButton id="btnSim" value="Sim" oncomplete="confirmation.hide();" actionListener="#{ProfessorController.deleteProfessor()}" process="@form" update=":principal" />
                <!--caso seja não somente fecha o modal-->
                <p:commandButton id="btnNao" value="Não" onclick="confirmation.hide();" type="button"/>
            </p:confirmDialog>
        </h:form>
        
        <!-- Abaixo temos um modal de confirmação de exclusão repare que ele é fora do form principal, pois se colocarmos dentro podemos ter alguns problemas com isso.-->
        <h:form id="dlgConsultaProfessor" prependId="false">
            <p:confirmDialog message="Já existe um professor com este CPF, deseja editá-lo?" header="Aviso" severity="alert" widgetVar="consultaProfessor" modal="true">
                <!--caso seja sim chamo o metodo excluir, e fecho o modal com o oncomplete, tenho o process que estou dizendo para processar o form, e update para atualizar a tabela-->
                <p:commandButton id="btnSimConsulta" value="Sim" oncomplete="consultaProfessor.hide();" actionListener="#{ProfessorController.carregaProfessor()}" process="@form" update=":principal" />
                <!--caso seja não somente fecha o modal-->
                <p:commandButton id="btnNaoConsulta" value="Não" onclick="consultaProfessor.hide();" type="button"/>
            </p:confirmDialog>
        </h:form>        
        
        <!-- Abaixo temos o modal que irá controlar as horas contratadas do professor-->
        <p:dialog widgetVar="disponibilidade" id="dialogDisponibilidade" header="Carga fechada - Horas Contratadas" resizable="false" closeOnEscape="true">
       
            <h:form id="dlgDisponibilidade" prependId="false">
                            <table>
                                <tr>
                                    <td>
                                        <p:selectOneMenu style="width: 300px;" label="Dia da Semana" id="selectDia" value="#{ProfessorController.selectedDiaSemana}"> 
                                            <f:selectItems value="#{ProfessorController.carregarDiaSemana}" />
                                         </p:selectOneMenu>
                                    </td>
                                    <td>
                                        <p:selectOneMenu style="width: 300px;" id="selectTurno" value="#{ProfessorController.selectedTurno}"> 
                                          <f:selectItem itemLabel="Selecione um Turno" itemValue="0"/>
                                          <f:selectItem itemLabel="Manhã" itemValue="1"/>
                                          <f:selectItem itemLabel="Tarde" itemValue="2"/>
                                          <f:selectItem itemLabel="Noite" itemValue="3"/>
                                         </p:selectOneMenu>                                        
                                    </td> 
                                </tr>
                                <tr>
                                    <tr>
                                        <td>
                                            <p:selectOneMenu style="width: 300px;" id="selectContrato" value="#{ProfessorController.selectedContrato}"> 
                                                <f:selectItems value="#{ProfessorController.carregarTipoContrato}" />                                             
                                             </p:selectOneMenu>                                             
                                        </td>
                                        <td>
                                            <p:selectOneMenu style="width: 300px;" id="selectUnidadeTipologia" value="#{ProfessorController.selectedUnidadeTipologia}"> 
                                                <f:selectItems value="#{ProfessorController.carregarUnidadeTipologia}" />                                             
                                             </p:selectOneMenu>                                             
                                        </td>                                        
                                    </tr>
                                    <td>
                                        <h:outputLabel value="Hora inicial " style="left:0px;"/>                                                         
                                        <p:inputMask mask="99:99" size="5" id="horaInicial" value="#{ProfessorController.hora_ini}" title="Informe a hora inicial" onblur="Verifica_Hora_Ini(this)"/>
                                    </td>
                                    <td>
                                        <h:outputLabel value="Hora final " style="left:0px;"/>                                                         
                                        <p:inputMask mask="99:99" size="5" id="horaFinal" value="#{ProfessorController.hora_fim}" title="Informe a hora final" onblur="Verifica_Hora_Ini(this)"/>
                                    </td>                                    
                                </tr>
                            </table> 
                
                <p:commandButton value="Salvar" id="incluiDisponibilidade" update=":dlgDisponibilidade" actionListener="#{ProfessorController.preparaInclusaoDisponibilidade()}"/>
                <p:commandButton value="Cancelar" id="cancelarDisponibilidade"  actionListener="#{ProfessorController.resetDisponibilidade()}" onclick="disponibilidade.hide()"/>
                
                <p:dataTable id="disponibilidades" var="disponibilidade" emptyMessage="Não existe disponibilidade cadastrada" 
                             value="#{ProfessorController.listaDisponibilidade}" rowKey="#{disponibilidade.id}" 
                             selectionMode="single" selection="#{ProfessorController.disponibilidadeSelecionada}" 
                             paginator="true" rows="10">       
                    
                               <p:column>   
                                   <f:facet name="header">  
                                           <h:outputText value="Dia da Semana" />  
                                   </f:facet>                        
                                       <h:outputText value="#{disponibilidade.diaSemana.nome}"/>
                               </p:column> 
                    
                               <p:column>   
                                   <f:facet name="header">  
                                           <h:outputText value="Contrato" />  
                                   </f:facet>                        
                                       <h:outputText value="#{disponibilidade.tipoContrato.descricao}"/>
                               </p:column>  
                    
                               <p:column>   
                                   <f:facet name="header">  
                                           <h:outputText value="Unidade" />  
                                   </f:facet>                        
                                       <h:outputText value="#{disponibilidade.professorUnidadeTipologia.unidade.nome}"/>
                               </p:column>                     
                    
                               <p:column>   
                                   <f:facet name="header">  
                                           <h:outputText value="Hora Inicial" />  
                                   </f:facet>                        
                                       <h:outputText value="#{disponibilidade.hora_ini}">
                                           <f:convertDateTime timeZone="America/Sao_Paulo" pattern="HH:mm"/>
                                       </h:outputText>
                               </p:column>     
                    
                               <p:column>   
                                   <f:facet name="header">  
                                           <h:outputText value="Hora Final" />  
                                   </f:facet>                        
                                       <h:outputText value="#{disponibilidade.hora_fim}">
                                           <f:convertDateTime timeZone="America/Sao_Paulo" pattern="HH:mm"/>
                                       </h:outputText>
                               </p:column>                    
                    
                </p:dataTable>
                
                <p:commandButton value="Deletar" id="deletarDisponibilidade" update=":dlgDisponibilidade :dlgDisponibilidade:disponibilidades" actionListener="#{ProfessorController.deleteDisponibilidade()}" />
                <p:commandButton value="Editar"  id="editarDisponibilidade"  update=":dlgDisponibilidade" actionListener="#{ProfessorController.preparaEdicaoDisponibilidade()}"/>                                
                
            </h:form>
            
        </p:dialog>
        
        <!-- Abaixo temos o modal que irá controlar as unidades e tipologias de um professor-->
        <p:dialog widgetVar="unidadeTipologia" id="dialogUnidadeTipologia" header="Unidade x Tipologia" resizable="false" closeOnEscape="true">
       
            <h:form id="dlgUnidadeTipologia" prependId="false">
                            <table>
                                <tr>
                                    <td>
                                        <p:selectOneMenu style="width: 300px;" label="Unidade" id="selectUnidade" value="#{ProfessorController.selectedUnidades}"> 
                                            <f:selectItems value="#{ProfessorController.carregarUnidade}" />
                                         </p:selectOneMenu>
                                    </td>
                                    <td>
                                        <p:selectOneMenu style="width: 300px;" id="selectTipologia" value="#{ProfessorController.selectedTipologia}"> 
                                            <f:selectItems value="#{ProfessorController.carregarSelect}" />
                                         </p:selectOneMenu>                                        
                                    </td> 
                                </tr>
                            </table> 
                
                <p:commandButton value="Incluir" id="incluiUnidadeTipologia" update=":dlgUnidadeTipologia :dlgUnidadeTipologia:unidadesTipologias" actionListener="#{ProfessorController.preparaInclusaoUnidadeTipologia()}"/>
                <p:commandButton value="Cancelar" id="cancelarUnidadeTipologia"  actionListener="#{ProfessorController.resetUnidadeTipologia()}" onclick="unidadeTipologia.hide()"/>
                
                <p:dataTable id="unidadesTipologias" var="unidadesTipologia" emptyMessage="Não existe Unidade e Tipologia cadastrada" 
                             value="#{ProfessorController.listaUnidadeTipologia}" rowKey="#{unidadesTipologia.id}" 
                             selectionMode="single" selection="#{ProfessorController.unidadeTipologiaSelecionada}" 
                             paginator="true" rows="10">       
                    
                               <p:column>   
                                   <f:facet name="header">  
                                           <h:outputText value="Unidade" />  
                                   </f:facet>                        
                                       <h:outputText value="#{unidadesTipologia.unidade.nome}"/>
                               </p:column> 
                    
                               <p:column>   
                                   <f:facet name="header">  
                                           <h:outputText value="Tipologia" />  
                                   </f:facet>                        
                                       <h:outputText value="#{unidadesTipologia.tipologia.nome}"/>
                               </p:column>                                                             
                    
                </p:dataTable>
                
                <p:commandButton value="Deletar" id="deletarUnidadeTipologia" update=":dlgUnidadeTipologia :dlgUnidadeTipologia:unidadesTipologias" actionListener="#{ProfessorController.deleteUnidadeTipologia()}" />
                
              <p:blockUI widgetVar="blockPrincipal" block=":principal" >                               
                    <p:graphicImage value="./../img/ajax-loader.gif"/>                  
              </p:blockUI>                 
                
            </h:form>
            
        </p:dialog>        
            
      </ui:define>            
   </ui:composition>
        
</html>